メイン画面 - 戦略ターン戦略.ターンの概念戦略.ターンとは、戦略画面の大名ターンもしくは軍団ターンのことです。 「現在ターンが回っている大名」「ターンが回っている軍団」 現在ターンが来ている大名番号や軍団番号を得るpターン情報.現在のターン【大名番号】 pターン情報.現在のターン【軍団番号】 void カスタム::On_プレイヤ担当ターン《メイン画面》() { int iDaimyoID = pターン情報.現在のターン【大名番号】 - 1; int iGundanID = pターン情報.現在のターン【軍団番号】 - 1; if (0 <= iDaimyoID && iDaimyoID < 最大数::大名情報::配列数) { int iBushouID = p大名情報[iDaimyoID].大名【武将番号】-1; if (0 <= iBushouID && iBushouID < 最大数::武将情報::配列数) { デバッグ出力 << "大名:" << Get_名字(iBushouID) << Get_名前(iBushouID) << endl; } } if (0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) { int iBushouID = p軍団情報[iGundanID].軍団長【武将番号】 - 1; if (0 <= iGundanID && iGundanID < 最大数::武将情報::配列数) { デバッグ出力 << "第" << (int)p軍団情報[iGundanID].軍団割当番号 << "軍団" << "の軍団長:" << Get_名字(iBushouID) << Get_名前(iBushouID) << endl; int iCastleID = p軍団情報[iGundanID].所属居城【城番号】-1; デバッグ出力 << "城:" << Get_城名(iCastleID) << Get_城称(iCastleID) << endl; } } /* On_プレイヤ担当ターン《メイン画面》 では切り替わり目なので、以下のような城ターンは機能しない int iGundanID = pターン情報.現在のターン【城番号】 - 1; if (0 <= iCastleID && iCastleID < 最大数::城情報::配列数) { デバッグ出力 << Get_城名(iCastleID) << Get_城称(iCastleID) << endl; } */ } On_プレイヤ担当ターン《メイン画面》()とOn_軍団ターン変更《メイン画面》() は城ターンに有効な値が入ってない「On_プレイヤ担当ターン《メイン画面》()」と「On_軍団ターン変更《メイン画面》()」は、切り替わりい直後のメソッドとなるため、城ターンの情報がまだ更新されていません。 void カスタム::On_軍団ターン変更《メイン画面》(int 軍団番号) { int iGundanID = 軍団番号 - 1; if (0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) { int iBushouID = p軍団情報[iGundanID].軍団長【武将番号】 - 1; if (0 <= iGundanID && iGundanID < 最大数::武将情報::配列数) { デバッグ出力 << "第" << (int)p軍団情報[iGundanID].軍団割当番号 << "軍団" << "の軍団長:" << Get_名字(iBushouID) << Get_名前(iBushouID) << endl; int iCastleID = p軍団情報[iGundanID].所属居城【城番号】 - 1; デバッグ出力 << "城:" << Get_城名(iCastleID) << Get_城称(iCastleID) << endl; } } /* On_軍団ターン変更《メイン画面》 では切り替わり目なので、以下のような城ターンは機能しない int iGundanID = pターン情報.現在のターン【城番号】 - 1; if (0 <= iCastleID && iCastleID < 最大数::城情報::配列数) { デバッグ出力 << Get_城名(iCastleID) << Get_城称(iCastleID) << endl; } */ } 注意点「大名ターン」と「大名ターン」の「間」など、「どの軍団のターンでもない」といった状態は頻繁に発生します。 なお、戦争をしている間は「戦争を仕掛けた軍団の行動」ですから、 より詳細を知るには...「メイン画面 - 戦略ターン」に関する主な所は以上となります。 詳しくは「ターン情報型.h」などを参照してください。 |